package stu.khy.dao;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

public interface BaseDao<T> {
	//instance代表的是实例
	
	//1.使用泛型类型是为了接受各种数据类型
	public void save(T instance);
	
	public void update(T instance);
	
	public void saveOrUpdate(T instance);
	
	public T merage(T instance);
	
	public void delete(T instance);
	
	//删除多个
	public void delete(Collection<T> instance);

	//通过id删除  返回受影响的行数  class明确删除的哪张表
	public Integer delete(Class<T> cls,Object[] ids);
	
    //查询，根据id查询
	public T get(Class<T> cls,Serializable id);
	
	//查询全部信息  参数：类型信息
	public List<T> findAll(Class<T> cls);//from xxx
	
	//分页查询  投影查询可能显示多个表  定义一个泛型，让传入的更灵活
	public <E> List<E> findForPage(String hql,int pageNo,int pageSize,Object...values);
	
	//获得总条数 number类型是long,double，int类型的父类
	public Number getTotalCount(String hql,Object...values);
	
	public <E> List<E> find(String hql,Object...values);

	
}
